using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
using System.IO;
using CrystalDecisions.CrystalReports;
using System.Data.SqlClient;

public partial class ReporteEmpleado : System.Web.UI.Page
{
    ReportDocument reportDoc = new ReportDocument();
    protected void Page_Load(object sender, EventArgs e)
    {
        mostrarReporte();
    }
    protected void mostrarReporte()
    {
        try
        {
            String cadena = (String)ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
            SqlConnection conexion = new SqlConnection(cadena);
            string consulta = "";
            string concatena = "";
            SqlDataAdapter da = new System.Data.SqlClient.SqlDataAdapter(consulta + " " + concatena, conexion);
            int num = 0;

            if (tb_nombre.Text != string.Empty)
            {
                if (num == 0)
                {
                    consulta = "SELECT Empleados.cod_empleado, Empleados.nick, Perfiles.descripcion AS Perfil, Puestos.descripcion AS Puesto, Personas.nombres, Personas.apellidos, Empleados.nro_documento, Personas.direccion, Personas.email, Tipos_Documentos.descripcion AS Tipo_Doc FROM Empleados JOIN Perfiles ON Empleados.perfil = Perfiles.perfil JOIN Personas ON Empleados.nro_documento = Personas.nro_documento JOIN  Puestos ON Empleados.cod_puesto = Puestos.cod_puesto JOIN Tipos_Documentos ON Empleados.cod_tipo_documento = Tipos_Documentos.cod_tipo_documento  " +
                               " WHERE Personas.nombres like '" + tb_nombre.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta, conexion);
                    num++;
                }
                else
                {
                    concatena = " AND Personas.nombres like '" + tb_nombre.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta + " " + concatena, conexion);
                    num++;
                }
            }
            if (tb_apellido.Text != string.Empty)
            {
                if (num == 0)
                {
                    consulta = "SELECT SELECT Empleados.cod_empleado, Empleados.nick, Perfiles.descripcion AS Perfil, Puestos.descripcion AS Puesto, Personas.nombres, Personas.apellidos, Empleados.nro_documento, Personas.direccion, Personas.email, Tipos_Documentos.descripcion AS Tipo_Doc FROM Empleados JOIN Perfiles ON Empleados.perfil = Perfiles.perfil JOIN Personas ON Empleados.nro_documento = Personas.nro_documento JOIN  Puestos ON Empleados.cod_puesto = Puestos.cod_puesto JOIN Tipos_Documentos ON Empleados.cod_tipo_documento = Tipos_Documentos.cod_tipo_documento " +
                               " WHERE Personas.apellidos like '" + tb_apellido.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta, conexion);
                    num++;
                }
                else
                {
                    concatena = " AND Personas.apellidos like '" + tb_apellido.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta + " " + concatena, conexion);
                    num++;
                }
            }
            if (tb_nroDocumentoReporte.Text != string.Empty)
            {
                if (num == 0)
                {
                    consulta = "SELECT Empleados.cod_empleado, Empleados.nick, Perfiles.descripcion AS Perfil, Puestos.descripcion AS Puesto, Personas.nombres, Personas.apellidos, Empleados.nro_documento, Personas.direccion, Personas.email, Tipos_Documentos.descripcion AS Tipo_Doc FROM Empleados JOIN Perfiles ON Empleados.perfil = Perfiles.perfil JOIN Personas ON Empleados.nro_documento = Personas.nro_documento JOIN  Puestos ON Empleados.cod_puesto = Puestos.cod_puesto JOIN Tipos_Documentos ON Empleados.cod_tipo_documento = Tipos_Documentos.cod_tipo_documento  " +
                               " WHERE Personas.nro_documento like '" + tb_nroDocumentoReporte.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta, conexion);
                    num++;
                }
                else
                {
                    concatena = " AND Personas.nro_documento like '" + tb_nroDocumentoReporte.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta + " " + concatena, conexion);
                    num++;
                }
            }
            if (tb_tipoDoc.Text != string.Empty)
            {
                if (num == 0)
                {
                    consulta = "SELECT Empleados.cod_empleado, Empleados.nick, Perfiles.descripcion AS Perfil, Puestos.descripcion AS Puesto, Personas.nombres, Personas.apellidos, Empleados.nro_documento, Personas.direccion, Personas.email, Tipos_Documentos.descripcion AS Tipo_Doc FROM Empleados JOIN Perfiles ON Empleados.perfil = Perfiles.perfil JOIN Personas ON Empleados.nro_documento = Personas.nro_documento JOIN  Puestos ON Empleados.cod_puesto = Puestos.cod_puesto JOIN Tipos_Documentos ON Empleados.cod_tipo_documento = Tipos_Documentos.cod_tipo_documento  " +
                               " WHERE Tipos_Documentos.descripcion like '" + tb_tipoDoc.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta, conexion);
                    num++;
                }
                else
                {
                    concatena = " AND Tipos_Documentos.descripcion like '" + tb_tipoDoc.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta + " " + concatena, conexion);
                    num++;
                }
            }
            if (tb_puesto.Text != string.Empty)
            {
                if (num == 0)
                {
                    consulta = "SELECT Empleados.cod_empleado, Empleados.nick, Perfiles.descripcion AS Perfil, Puestos.descripcion AS Puesto, Personas.nombres, Personas.apellidos, Empleados.nro_documento, Personas.direccion, Personas.email, Tipos_Documentos.descripcion AS Tipo_Doc FROM Empleados JOIN Perfiles ON Empleados.perfil = Perfiles.perfil JOIN Personas ON Empleados.nro_documento = Personas.nro_documento JOIN  Puestos ON Empleados.cod_puesto = Puestos.cod_puesto JOIN Tipos_Documentos ON Empleados.cod_tipo_documento = Tipos_Documentos.cod_tipo_documento  " +
                               " WHERE Puestos.descripcion like '" + tb_puesto.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta, conexion);
                    num++;
                }
                else
                {
                    concatena = " AND Puestos.descripcion like '" + tb_puesto.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta + " " + concatena, conexion);
                    num++;
                }
            }
            if (tb_nick.Text != string.Empty)
            {
                if (num == 0)
                {
                    consulta = "SELECT Empleados.cod_empleado, Empleados.nick, Perfiles.descripcion AS Perfil, Puestos.descripcion AS Puesto, Personas.nombres, Personas.apellidos, Empleados.nro_documento, Personas.direccion, Personas.email, Tipos_Documentos.descripcion AS Tipo_Doc FROM Empleados JOIN Perfiles ON Empleados.perfil = Perfiles.perfil JOIN Personas ON Empleados.nro_documento = Personas.nro_documento JOIN  Puestos ON Empleados.cod_puesto = Puestos.cod_puesto JOIN Tipos_Documentos ON Empleados.cod_tipo_documento = Tipos_Documentos.cod_tipo_documento  " +
                               " WHERE Empleados.nick like '" + tb_nick.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta, conexion);
                    num++;
                }
                else
                {
                    concatena = " AND Empleados.nick like '" + tb_nick.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta + " " + concatena, conexion);
                    num++;
                }
            }
            if (tb_nombre.Text.Equals("") && tb_apellido.Text.Equals("") && tb_nroDocumentoReporte.Text.Equals("") && tb_nick.Text.Equals("") && tb_puesto.Text.Equals("") && tb_tipoDoc.Text.Equals(""))
            {
                consulta = "SELECT Empleados.cod_empleado, Empleados.nick, Perfiles.descripcion AS Perfil, Puestos.descripcion AS Puesto, Personas.nombres, Personas.apellidos, Empleados.nro_documento, Personas.direccion, Personas.email, Tipos_Documentos.descripcion AS Tipo_Doc FROM Empleados JOIN Perfiles ON Empleados.perfil = Perfiles.perfil JOIN Personas ON Empleados.nro_documento = Personas.nro_documento JOIN  Puestos ON Empleados.cod_puesto = Puestos.cod_puesto JOIN Tipos_Documentos ON Empleados.cod_tipo_documento = Tipos_Documentos.cod_tipo_documento ";
                da = new System.Data.SqlClient.SqlDataAdapter(consulta, conexion);
            }
            DataSet DataSet_Empleados = new DataSet();
            da.Fill(DataSet_Empleados, "Empleados");
            reportDoc.Load(Server.MapPath("~/Reportes/ReporteEmpleado.rpt"));
            reportDoc.SetDataSource(DataSet_Empleados.Tables["Empleados"]);
            Reporte_Empleado.ReportSource = reportDoc;
            Reporte_Empleado.RefreshReport();
        }
        catch (Exception error)
        {
            error.ToString();
        }
    }
    
    protected void ib_reporte_Click(object sender, ImageClickEventArgs e)
    {
        mostrarReporte();
    }
    protected void ib_cancelarReporte_Click(object sender, ImageClickEventArgs e)
    {
        tb_apellido.Text = string.Empty;
        tb_nombre.Text = string.Empty;
        tb_nroDocumentoReporte.Text = string.Empty;
        tb_tipoDoc.Text = string.Empty;
        tb_puesto.Text = string.Empty;
        tb_nick.Text = string.Empty;
        mostrarReporte();
    }
}
